c++类模板template中的typename使用方法

您所在的位置:网站首页 template typename t class c++类模板template中的typename使用方法

c++类模板template中的typename使用方法

2022-08-27 06:35| 来源: 网络整理| 查看: 265

c++

类模板

template

中的

typename

使⽤⽅法

-

超级棒

转载:

https://blog.csdn.net/vanturman/article/details/80269081

近⽇,看到这样⼀⾏代码:

typedef typename __type_traits::has_trivial_destructor trivial_destructor;

看起来它应该是定义⼀个类型别名,但是

typedef

不应该是像这样使⽤么,

typedef

+

原类型名

+

新类型名:

typedef 

char

* PCHAR;

可为何此处多了⼀个

typename

?另外

__type_traits

⼜是什么?

看起来有些眼熟,想起之前在

Effective C++

上曾经看过

traits

这⼀技术的介绍,和这⾥的

__type_traits

有点像。只是⼀直未曾遇到需要

traits

的时

候,所以当时并未仔细研究。然⽽

STL

中⼤量的充斥着的

traits

,⼀查才发现原来它是⼀种⾮常⾼级的技术,在更现的⾼级语⾔中已经很普

遍。因此这次花了些时间去学习它,接下来还有会有另⼀篇⽂章来详细介绍

C++

traits

技术。在这⾥,我们暂时忘记它,仅将它当成⼀个普

通的类,先来探讨⼀下这个多出来的

typename

是怎么回事?

typename

的常见⽤法

对于

typename

这个关键字,如果你熟悉

C++

的模板,⼀定会知道它有这样⼀种最常见的⽤法

(

代码摘⾃

C++ Primer)

 

// implement strcmp-like generic compare function

 

// returns 0 if the values are equal, 1 if v1 is larger, -1 if v1 is smaller

 

template 

 

int

 compare(

const

 T &v1, 

const

 T &v2)

 

{

 

    

if

 (v1 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3